A serializer/deserializer is a pair of functional blocks commonly used in high speed communications. These blocks convert data between serial and parallel data interfaces in each direction. A generic serializer converts parallel data to serial data, while a generic deserializer (DESERDES) converts serial data to parallel data.
Serial data is often transmitted in frames, which are prefixed by a set of bits called a preamble. For example, in Ethernet, the preamble consists of 8 bytes, the last of which has a special sequence known as the Start of Frame Delimiter (SFD), which indicates that actual information follows. The purpose of the preamble is to allow bit locking with a Digital Phase Lock Loop (DPLL), which is used to synchronize an embedded serial data clock, embedded in the preamble, to a transmit data clock. The embedded serial data clock may be recovered from the data stream using a clock recovery technique. Thereafter, the embedded serial data clock may be divided down to the parallel rate. To acquire lock, the DPLL usually needs to receive bits at the start of each frame.
However, when the first bit of the preamble is received, the transmit data clock may not be in phase with the embedded serial data clock of the data stream. In this case, during the course of the preamble, the DPLL can learn the correct phase and can synchronize both clocks. In this process, however, the DPLL may miss or gain a number of bits. A special pattern is therefore generally used to mark the last two bits of the preamble. When this special pattern is received, the receiving interface starts collecting the bits of actual information into bytes for processing.
Two exemplary problems that may affect a DESERDES during bit locking are bit shifting and bit corruption. When bit shifting occurs, the bit stream is shifted left or right by one or more bits. This means that the bit stream is intact, but the DESERDES is reading in all values shifted by one or more bits. Consequently, the preamble is not recognized and the whole frame is lost.
When bit corruption occurs, one or more bits contain the wrong value. If corruption occurs in the body of a frame, usually, checksum or error correction can recover the original value. However, if corruption occurs in the preamble, the DESERDES is unable to lock onto the preamble and loses the whole frame.